// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from "vue";
import App from "./App";
import router from "./router";

// 引入element-ui
import ELEMENT from "element-ui";
Vue.use(ELEMENT);
// 引入vuex
import Vuex from "vuex";
Vue.use(Vuex);
// 引入 js-MD5加密
import md5 from "js-md5";
Vue.prototype.$md5 = md5;
// 引入axios
import axios from "axios";
// 配置默认根路由
axios.defaults.baseURL = "http://192.168.1.201:8080/";
// axios.defaults.baseURL = "https://www.raintec.cn";

// 设置拦截器，给axios装配token信息
axios.interceptors.request.use(
  function(config) {
    // config：对象，是axios的子级成员
    //         可以对其进行配置，这个配置信息直接会作用给axios
    //
    // 获取token
    var token = window.sessionStorage.getItem("token");
    // console.log(config);

    // 给axios的请求头中设置token信息，名称为Authorization
    config.headers.token = token;
    // config.headers.Accept = "application/json";
    // config.headers["Content-Type"] = "application/json";
    if (window.location.hash != "/" || window.location.hash != "/Login") {
      if (!window.sessionStorage.getItem("token")) {
        // this.$router.push("/");
        window.location.hash == "/";
      }
    }
    return config;
  },
  function(error) {
    return Promise.reject(error);
  }
);
// 添加响应拦截器
axios.interceptors.response.use(
  response => {
    // 对响应数据做点什么
    // 在请求返回到组件之前，都会先经过响应拦截器 ， 可以判断状态码的值 来决定是否要跳转 到登录页重新登录
    // 返回的信息 会被包装在 响应对象的 data 里边
    if (response.data.status == 5 || response.data.status == 11) {
      // this.$message.error(response.data.msg);
      // 弹出提示信息
      alert(response.data.msg);
      // 跳转至登录页
      window.location.href = "/";
      // location.replace("/");

      // 阻止后续代码执行
      return false;
    }
    return response;
  },
  function(error) {
    // 对响应错误做点什么

    return Promise.reject(error);
    // return;
  }
);
// 引入字体文件
import "./assets/fonts/iconfont.css";

// 引入全局样式
import "./assets/css/global.css";
// 将ajax添加至vue实例
Vue.prototype.$http = axios;
Vue.config.productionTip = false;

/* eslint-disable no-new */
new Vue({
  el: "#app",
  router,
  components: { App },
  template: "<App/>"
});
